package me.principality.ktsql.protocol.mysql.helper

import java.util.*

object RandomGenerator {
    private val SEED = byteArrayOf(
            'a'.toByte(), 'b'.toByte(), 'e'.toByte(), 'd'.toByte(), 'e'.toByte(),
            'f'.toByte(), 'g'.toByte(), 'h'.toByte(), 'i'.toByte(), 'j'.toByte(),
            'k'.toByte(), 'l'.toByte(), 'm'.toByte(), 'n'.toByte(), 'o'.toByte(),
            'p'.toByte(), 'q'.toByte(), 'r'.toByte(), 's'.toByte(), 't'.toByte(),
            'u'.toByte(), 'v'.toByte(), 'w'.toByte(), 'x'.toByte(), 'y'.toByte(),
            'z'.toByte(), 'A'.toByte(), 'B'.toByte(), 'C'.toByte(), 'D'.toByte(),
            'E'.toByte(), 'F'.toByte(), 'G'.toByte(), 'H'.toByte(), 'I'.toByte(),
            'J'.toByte(), 'K'.toByte(), 'L'.toByte(), 'M'.toByte(), 'N'.toByte(),
            'O'.toByte(), 'P'.toByte(), 'Q'.toByte(), 'R'.toByte(), 'S'.toByte(),
            'T'.toByte(), 'U'.toByte(), 'V'.toByte(), 'W'.toByte(), 'X'.toByte(),
            'Y'.toByte(), 'Z'.toByte(), '0'.toByte(), '1'.toByte(), '2'.toByte(),
            '3'.toByte(), '4'.toByte(), '5'.toByte(), '6'.toByte(), '7'.toByte(),
            '8'.toByte(), '9'.toByte())
    private val random = Random()

    /**
     * Generate random bytes.
     *
     * @param length length for generated bytes.
     * @return generated bytes
     */
    fun generateRandomBytes(length: Int): ByteArray {
        val result = ByteArray(length)
        for (i in 0 until length) {
            result[i] = SEED[random.nextInt(SEED.size)]
        }
        return result
    }
}